/**
 * router 路由模块
 * 处理路由
 */

var Student = require('./student');

// 一、express 提供了一种更好的方式用来专门包装路由
var express = require('express');

//1.创建一个路由容器
var router = express.Router();

//2.把路由都挂载到路由容器中
router.get('/students', function (req, res) {
	// readFile 第二个参数是可选的，传入 utf8 ，把文件直接按照 utf-8编码读取
	// 也可以通过 data.toString() 方式转换
	// fs.readFile('./database.json', 'utf8', function (err, data) {
	// 	if (err) {
	// 		return res.status(500).send('Server error.');
	// 	}
	// 	// console.log(typeof data);
	// 	// 从文件读取的数据是字符串，要转成对象
	//   var students = JSON.parse(data).students;

	// 	res.render('index.html', {
	// 		fruits: ['苹果', '橘子', '香蕉', '葡萄'],
	// 		students,
	// 	});
	// });

	Student.find(function (err, students) {
		if (err) {
			return res.status(500).send('Server error.');
		}
		res.render('index.html', {
			fruits: ['苹果', '橘子', '香蕉', '葡萄'],
			students,
		});
	});
});

router.get('/students/new', function (req, res) {
	res.render('new.html');
});

router.post('/students/new', function (req, res) {
	//1.获取表单数据
	//2.处理数据 将数据保存到 database.json中
	//3.发送响应
	//先读取文件，转成对象，push数据，转回字符串，写入文件
	// console.log(req.body);
	let student = req.body;
	new Student(student).save(function (err) {
		if (err) {
			return res.status(500).send('Server error.');
		}
		res.redirect('/students');
	});
});

router.get('/students/edit', function (req, res) {
	//1.在客户端列表页中处理链接问题，需要有 id 参数
	//2.获取要编辑学生的 id 是字符串
	//3.渲染编辑页面
	Student.findById(req.query.id, function (err, student) {
		if (err) {
			return res.status(500).send('Server error.');
		}
		res.render('edit.html', {
			student,
		});
	});
});

router.post('/students/edit', function (req, res) {
	// console.log(req.body);
	let student = req.body;
	Student.updateOne({ _id: req.body.id }, student, function (err) {
		if (err) {
			return res.status(500).send('Server error.');
		}
		res.redirect('/students');
	});
});

router.get('/students/delete', function (req, res) {
	//1.获取要删除学生的 id
	//2.根据 id 执行删除操作
	//3.重新渲染页面
	// console.log(req.query.id);
	Student.deleteOne({ _id: req.query.id }, function (err) {
		if (err) {
			return res.status(500).send('Server error.');
		}
	});
	res.redirect('/students');
});

//3.导出router
module.exports = router;
